let p = project("foo")
.file("Cargo.toml", &basic_bin_manifest("foo"))
- .file("src/main.rs", r#"
+ .file("src/foo.rs", r#"
#![feature(test)]
extern crate test;
[COMPILING] foo v0.5.0 ({})
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]", p.url()))
- .with_stdout_contains("test bench_hello ... bench: [..]"));
+ .with_stdout("
+running 1 test
+test bench_hello ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
}
#[test]
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]mybench-[..][EXE]
", dir = prj.url()))
- .with_stdout_contains("test run2 ... bench: [..]"));
+ .with_stdout("
+running 1 test
+test run2 ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
}
#[test]
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]
", dir = prj.url()))
- .with_stdout_contains("test run1 ... bench: [..]"));
+ .with_stdout("
+running 1 test
+test run1 ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
}
#[test]
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]bin2-[..][EXE]
", dir = prj.url()))
- .with_stdout_contains("test run2 ... bench: [..]"));
+ .with_stdout("
+running 1 test
+test run2 ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
}
#[test]
let p = project("foo")
.file("Cargo.toml", &basic_bin_manifest("foo"))
- .file("src/main.rs", r#"
+ .file("src/foo.rs", r#"
#![feature(test)]
extern crate test;
fn main() {}
assert_that(p.cargo_process("bench").arg("-v").arg("hello"),
execs().with_stderr(&format!("\
[COMPILING] foo v0.5.0 ({url})
-[RUNNING] `rustc [..] src[/]main.rs [..]`
+[RUNNING] `rustc [..] src[/]foo.rs [..]`
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] `[..]target[/]release[/]deps[/]foo-[..][EXE] hello --bench`", url = p.url()))
- .with_stdout_contains("test bench_hello ... bench: [..]"));
+ .with_stdout("
+running 1 test
+test bench_hello ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
}
#[test]
let p = project("foo")
.file("Cargo.toml", &basic_bin_manifest("foo"))
- .file("src/main.rs", r#"
+ .file("src/foo.rs", r#"
#![feature(test)]
extern crate test;
fn hello() -> &'static str {
execs().with_stdout("hello\n"));
assert_that(p.cargo("bench"),
- execs().with_stdout_contains("test bench_hello ... ")
+ execs().with_stdout_contains("
+running 1 test
+test bench_hello ... ")
.with_stderr_contains(format!("\
[COMPILING] foo v0.5.0 ({})
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]
thread '[..]' panicked at 'assertion failed: \
- `(left == right)`[..]", p.url()))
- .with_stderr_contains("[..]left: `\"hello\"`[..]")
- .with_stderr_contains("[..]right: `\"nope\"`[..]")
- .with_stderr_contains("[..]src[/]main.rs:14[..]")
+ `(left == right)` (left: \
+ `\"hello\"`, right: `\"nope\"`)', src[/]foo.rs:14
+[..]
+", p.url()))
.with_status(101));
}
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]
[RUNNING] target[/]release[/]deps[/]baz-[..][EXE]", p.url()))
- .with_stdout_contains("test lib_bench ... bench: [..]")
- .with_stdout_contains("test bin_bench ... bench: [..]"));
+ .with_stdout("
+running 1 test
+test lib_bench ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+
+running 1 test
+test bin_bench ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"))
}
#[test]
[COMPILING] bar v0.0.1 ({dir})
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]bar-[..][EXE]", dir = p.url()))
- .with_stdout_contains("test bar_bench ... bench: [..]"));
+ .with_stdout("
+running 1 test
+test bar_bench ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
}
#[test]
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]
[RUNNING] target[/]release[/]deps[/]bench-[..][EXE]", p.url()))
- .with_stdout_contains("test internal_bench ... bench: [..]")
- .with_stdout_contains("test external_bench ... bench: [..]"));
+ .with_stdout("
+running 1 test
+test internal_bench ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+
+running 1 test
+test external_bench ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"))
}
#[test]
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]
[RUNNING] target[/]release[/]deps[/]external-[..][EXE]", p.url()))
- .with_stdout_contains("test internal_bench ... bench: [..]")
- .with_stdout_contains("test external_bench ... bench: [..]"));
+ .with_stdout("
+running 1 test
+test internal_bench ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+
+running 1 test
+test external_bench ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"))
}
#[test]
[COMPILING] foo v0.0.1 ({dir})
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]", dir = p.url()))
- .with_stdout_contains("test bar ... bench: [..]"));
+ .with_stdout("
+running 1 test
+test bar ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
assert_that(p.cargo("bench").arg("foo"),
execs().with_status(0)
.with_stderr("[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]")
- .with_stdout_contains("test foo ... bench: [..]"));
+ .with_stdout("
+running 1 test
+test foo ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
}
// Regression test for running cargo-bench twice with
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]", p.url()))
- .with_stdout_contains_n("test [..] ... bench: [..]", 2));
+ .with_stdout("
+running 1 test
+test [..] ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+
+running 1 test
+test [..] ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"))
}
#[test]
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]syntax-[..][EXE]
[RUNNING] target[/]release[/]deps[/]bench-[..][EXE]", dir = p.url()))
- .with_stdout_contains("test foo_bench ... bench: [..]")
- .with_stdout_contains("test bench ... bench: [..]"));
+ .with_stdout("
+running 1 test
+test foo_bench ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+
+running 1 test
+test bench ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
}
#[test]
[COMPILING] syntax v0.0.1 ({dir})
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]syntax-[..][EXE]", dir = p.url()))
- .with_stdout_contains("test bench ... bench: [..]"));
+ .with_stdout("
+running 1 test
+test bench ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
}
#[test]
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] `[..]target[/]release[/]deps[/]foo-[..][EXE] --bench`
[RUNNING] `[..]target[/]release[/]deps[/]bench-[..][EXE] --bench`", dir = p.url()))
- .with_stdout_contains_n("test foo ... bench: [..]", 2));
+ .with_stdout("
+running 1 test
+test foo ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+running 1 test
+test foo ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
p.root().move_into_the_past();
assert_that(p.cargo("bench").arg("-v"),
execs().with_status(0)
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] `[..]target[/]release[/]deps[/]foo-[..][EXE] --bench`
[RUNNING] `[..]target[/]release[/]deps[/]bench-[..][EXE] --bench`", dir = p.url()))
- .with_stdout_contains_n("test foo ... bench: [..]", 2));
+ .with_stdout("
+running 1 test
+test foo ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+
+running 1 test
+test foo ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
}
#[test]
[COMPILING] foo v0.0.1 ({dir})
[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]", dir = p.url()))
- .with_stdout_contains("test foo ... bench: [..]"));
+ .with_stdout("
+running 1 test
+test foo ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
assert_that(p.cargo("bench"),
execs().with_status(0)
.with_stderr("[FINISHED] release [optimized] target(s) in [..]
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]")
- .with_stdout_contains("test foo ... bench: [..]"));
+ .with_stdout("
+running 1 test
+test foo ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
}
#[test]
[RUNNING] `{dir}[/]target[/]release[/]deps[/]testbench-[..][EXE] --bench`
[RUNNING] `{dir}[/]target[/]release[/]deps[/]testb1-[..][EXE] --bench`",
dir = p.root().display(), url = p.url()))
- .with_stdout_contains("test bench_bench1 ... bench: [..]")
- .with_stdout_contains("test bench_bench2 ... bench: [..]"));
+ .with_stdout("
+running 1 test
+test bench_bench1 ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+
+running 1 test
+test bench_bench2 ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
}
#[test]
[COMPILING] foo v0.1.0 ([..])
[FINISHED] dev [unoptimized + debuginfo] target(s) in [..]
[RUNNING] target[/]debug[/]deps[/]b-[..][EXE]")
- .with_stdout_contains("test foo ... ok"));
+ .with_stdout("
+running 1 test
+test foo ... ok
+
+test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured
+
+"));
}
#[test]
"));
}
-#[test]
-fn test_bench_no_fail_fast() {
- if !is_nightly() { return }
-
- let p = project("foo")
- .file("Cargo.toml", &basic_bin_manifest("foo"))
- .file("src/foo.rs", r#"
- #![feature(test)]
- extern crate test;
- fn hello() -> &'static str {
- "hello"
- }
-
- pub fn main() {
- println!("{}", hello())
- }
-
- #[bench]
- fn bench_hello(_b: &mut test::Bencher) {
- assert_eq!(hello(), "hello")
- }
-
- #[bench]
- fn bench_nope(_b: &mut test::Bencher) {
- assert_eq!("nope", hello())
- }"#);
-
- assert_that(p.cargo_process("bench").arg("--no-fail-fast"),
- execs().with_status(101)
- .with_stderr_contains("\
-[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]")
- .with_stdout_contains("running 2 tests")
- .with_stderr_contains("\
-[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]")
- .with_stdout_contains("test bench_hello [..]")
- .with_stdout_contains("test bench_nope [..]"));
-}
-
#[test]
fn test_bench_multiple_packages() {
if !is_nightly() { return }
execs().with_status(0)
.with_stderr_contains("\
[RUNNING] target[/]release[/]deps[/]bbaz-[..][EXE]")
- .with_stdout_contains("test bench_baz ... bench: [..]")
+ .with_stdout_contains("
+running 1 test
+test bench_baz ... bench: 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+")
.with_stderr_contains("\
[RUNNING] target[/]release[/]deps[/]bbar-[..][EXE]")
- .with_stdout_contains("test bench_bar ... bench: [..]"));
+ .with_stdout_contains("
+running 1 test
+test bench_bar ... bench: 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+"));
}
#[test]
execs().with_status(0)
.with_stderr_contains("\
[RUNNING] target[/]release[/]deps[/]bar-[..][EXE]")
- .with_stdout_contains("test bench_bar ... bench: [..]")
- .with_stderr_contains("\
+ .with_stdout_contains("
+running 1 test
+test bench_bar ... bench: 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+")
+ .with_stderr_contains("\
[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]")
- .with_stdout_contains("test bench_foo ... bench: [..]"));
+ .with_stdout_contains("
+running 1 test
+test bench_foo ... bench: 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+"));
}
#[test]
-fn bench_all_exclude() {
+fn bench_all_virtual_manifest() {
if !is_nightly() { return }
- let p = project("foo")
+ let p = project("workspace")
.file("Cargo.toml", r#"
+ [workspace]
+ members = ["foo", "bar"]
+ "#)
+ .file("foo/Cargo.toml", r#"
[project]
name = "foo"
version = "0.1.0"
-
- [workspace]
- members = ["bar", "baz"]
"#)
- .file("src/main.rs", r#"
- fn main() {}
+ .file("foo/src/lib.rs", r#"
+ pub fn foo() {}
+ "#)
+ .file("foo/benches/foo.rs", r#"
+ #![feature(test)]
+ extern crate test;
+
+ use test::Bencher;
+
+ #[bench]
+ fn bench_foo(_: &mut Bencher) -> () { () }
"#)
.file("bar/Cargo.toml", r#"
[project]
version = "0.1.0"
"#)
.file("bar/src/lib.rs", r#"
+ pub fn bar() {}
+ "#)
+ .file("bar/benches/bar.rs", r#"
#![feature(test)]
-
extern crate test;
+ use test::Bencher;
+
#[bench]
- pub fn bar(b: &mut test::Bencher) {
- b.iter(|| {});
- }
- "#)
- .file("baz/Cargo.toml", r#"
- [project]
- name = "baz"
- version = "0.1.0"
- "#)
- .file("baz/src/lib.rs", r#"
- #[test]
- pub fn baz() {
- break_the_build();
- }
+ fn bench_bar(_: &mut Bencher) -> () { () }
"#);
+ // The order in which foo and bar are built is not guaranteed
assert_that(p.cargo_process("bench")
- .arg("--all")
- .arg("--exclude")
- .arg("baz"),
+ .arg("--all"),
execs().with_status(0)
- .with_stdout_contains("\
+ .with_stderr_contains("\
+[RUNNING] target[/]release[/]deps[/]bar-[..][EXE]")
+ .with_stdout_contains("
running 1 test
-test bar ... bench: [..] ns/iter (+/- [..])"));
+test bench_bar ... bench: 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+")
+ .with_stderr_contains("\
+[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]")
+ .with_stdout_contains("
+running 1 test
+test bench_foo ... bench: 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+"));
}
#[test]
-fn bench_all_virtual_manifest() {
+fn bench_virtual_manifest_all_implied() {
if !is_nightly() { return }
let p = project("workspace")
"#);
// The order in which foo and bar are built is not guaranteed
- assert_that(p.cargo_process("bench")
- .arg("--all"),
+ assert_that(p.cargo_process("bench"),
execs().with_status(0)
.with_stderr_contains("\
[RUNNING] target[/]release[/]deps[/]bar-[..][EXE]")
- .with_stdout_contains("test bench_bar ... bench: [..]")
- .with_stderr_contains("\
-[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]")
- .with_stdout_contains("test bench_foo ... bench: [..]"));
-}
-
-// https://github.com/rust-lang/cargo/issues/4287
-#[test]
-fn legacy_bench_name() {
- if !is_nightly() { return }
-
- let p = project("foo")
- .file("Cargo.toml", r#"
- [project]
- name = "foo"
- version = "0.1.0"
-
- [[bench]]
- name = "bench"
- "#)
- .file("src/lib.rs", r#"
- pub fn foo() {}
- "#)
- .file("src/bench.rs", r#"
- #![feature(test)]
- extern crate test;
-
- use test::Bencher;
+ .with_stdout_contains("
+running 1 test
+test bench_bar ... bench: 0 ns/iter (+/- 0)
- #[bench]
- fn bench_foo(_: &mut Bencher) -> () { () }
- "#);
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+")
+ .with_stderr_contains("\
+[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]")
+ .with_stdout_contains("
+running 1 test
+test bench_foo ... bench: 0 ns/iter (+/- 0)
- assert_that(p.cargo_process("bench"), execs().with_status(0).with_stderr_contains("\
-[WARNING] path `[..]src[/]bench.rs` was erroneously implicitly accepted for benchmark `bench`,
-please set bench.path in Cargo.toml"));
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+"));
}
+